SATySFI v0.1のパッケージシステムの検証
そもそもこの時点で#[config]とかになっていて全然仕様と違う気がする
これをsatysfi solveする
こういう感じのものが降ってくる
code:20221212.satysfi-lock
language: ^0.1.0
locks:
- name: annot.0.0.1
location:
type: global
path: ./packages/annot/annot.0.0.1
dependencies:
- stdlib.0.0.1
test_only: false
lock_package_name: annot
- name: code.0.0.1
location:
type: global
path: ./packages/code/code.0.0.1
dependencies:
- stdlib.0.0.1
- font-latin-modern.0.0.1
test_only: false
lock_package_name: code
locks.locationがどういうことなのかサッパリわからない
type: globalはLIBROOT以下,つまり.satysfi/packages/code/code.0.0.1といった場所に置かれることを意味する(と思う)
現状のsatysfi-lockではどのリポジトリの?が無いように思える
これでは一意になんのパッケージを使うのかが確定できないように思える
code:20221212_flake.nix
{
inputs = {
devshell.url = "github:numtide/devshell";
};
に対して,
code:20221212_flake.lock
{
"nodes": {
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1667210711,
"narHash": "sha256-IoErjXZAkzYWHEpQqwu/DeRNJGFdR7X2OGbkhMqMrpw=",
"owner": "numtide",
"repo": "devshell",
"rev": "96a9dd12b8a447840cc246e17a47b81a4268bba7",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
}
こういうものが生成される
nodes.devshell.originalはまあ別にいいとして
nodes.devshell.lockedは本件においても示唆的だと思う
どのリポジトリの(owner,repo)
どのバージョンrev
普通にコミットID
これはブランチを指定したとしても最終的にはこれで扱われる)
整合性チェックnarHash
これが重要で,多分あるべき
今のsatysfi-lockには無い
SATySFiの場合は別にgitで管理しないような文章ファイルとかが要件としてありそうな気もする files:/home/brabra/aみたいな感じでローカルにも当てられるがこれも指定先がgitリポジトリであることを指定してきたはず